Client devices, particularly mobile devices, equipped with high-resolution touchscreens, powerful processors, and graphics processing units (GPUs) are increasingly in use for many applications including those associated with interactive applications such as electronic gaming. As client device screens increase in size and resolution, finer graphical detail and advanced graphical effects are becoming more common for interactive applications. And the processing capabilities of client device GPUs are constantly improving. Even so, many client devices cannot yet provide the rich visual experience and sophisticated graphical detail found in dedicated gaming consoles or high-end desktop computers. Several reasons exist for this discrepancy including power consumption and size. A high-end desktop GPU may consume 500 watts, whereas a high-end client device GPU may consume less than 10 watts. Moreover, client device GPUs likely will continue to lag behind desktop GPUs since battery capacity of many client devices is limited given that larger capacity batteries are bulky and may be inconsistent with many client device form factors particularly mobile device form factors.
A common approach to address these issues is to develop a version of the interactive application specifically designed considering the constraints of the hardware included in particular client devices. Doing so, oftentimes results in a lack of graphical details, such as complex lighting, shadows, particles, fog, detailed textures, complex models, non-critical graphical objects such as blades of grass in the field, and the like. This approach is oftentimes employed in modern games to allow such games to run on underpowered hardware, such as low-end desktop and laptop computers. Thus, through custom graphics settings, different levels of visual detail and effects can be enabled or disabled (e.g., using a configuration screen) to obtain a sufficient level of detail while allowing the game to be rendered at a full frame rate.
Alternatively, execution of the interactive application may be fully or partially offloaded to a remote server to make the application more accessible to all users. Such an approach may utilize general-purpose workloads running on the central processing units (CPUs) of the client devices. Or execution of game logic and rendering may be offloaded to a remote server using a thin client architecture in which the client device (thin client) receives and transmits user input to the server. The server, in turn, executes the game logic and rendering based on the received user input and provides the resulting audio-visual or visual only output encoded as compressed video to the client device. This approach is vulnerable to excessive latency if the server is not relatively geographically close to the client. Excessive latency may adversely and undesirably affect the user gaming experience. A need remains, therefore, for improved low latency interactive application solutions.